package com.hut.bms.enums;

import java.util.HashMap;
import java.util.Map;

public enum BookStatus {
    DETELE(0,"删除"),
    NORMAL(1,"可借阅"),
    FORBIODEN(2,"不可借阅"),
    ;

    //创建一个map存储BookStatus里的枚举信息
    private static final Map<Integer, BookStatus> CODE_TO_ENUM_MAP = new HashMap<>();
    //通过static代码块在类加载的时候将枚举信息存入map中，之后提供一个方法传一个参数code来获取枚举信息(相比其余方法，这个方式效率更高)
    static {
        for(BookStatus status:BookStatus.values()) {
            CODE_TO_ENUM_MAP.put(status.getCode(),status);
        }
    }
    //通过getDescByCode方法传入状态code就可以找到对应的枚举信息
    public static BookStatus getDescByCode1(Integer code) {
        return CODE_TO_ENUM_MAP.get(code);
    }

    BookStatus(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    //创建以参数code返回以BookStatus的方法获得枚举信息
    public static BookStatus getDescByCode2(Integer code) {
        switch (code) {
            case 0 : return DETELE;
            case 1 : return NORMAL;
            default:
                return FORBIODEN;
        }
    }
    public static String getDescByCode3(Integer code) {
        switch (code) {
            case 0 : return DETELE.getDesc();
            case 1 : return NORMAL.getDesc();
            default:
                return FORBIODEN.getDesc();
        }
    }
    private Integer code;
    private String desc;

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

}
